import moment from 'moment';
import { isDark } from '#/utils/utils';
import { getCssVariableValue } from '@/utils/utils';

const xAxisFormatter = function (params) {
  let item = params.seriesData[0];
  return (item && item.name) || '';
};

const xTypeTime = 'timer';
export const TIME_SUFFIX = [
  { title: '96点连续', value: 0 },
  // { title: '96点叠加', value: 3 },
  { title: '96点平均', value: 4 },
  { title: '日', value: 5 },
  { title: '月', value: 6 },
];

// 格式化导出数据
export const formatJson = (filterVal, jsonData) => {
  return jsonData.map((v) => {
    return filterVal.map((j) => {
      if (v) {
        return v[j];
      } else {
        return '-';
      }
    });
  });
};

export const formatCopper = function (value) {
  if (value === undefined || value === null || value === '-') {
    return 0.0;
  } else if (value === '#DIV/0!') {
    return 0.0;
    // return '#DIV/0!';
  }
  return parseFloat(value).toFixed(3);
};
export const formatCopper1 = function (value) {
  if (value === undefined || value === null || value === '-') {
    return '-';
  } else if (value === '#DIV/0!') {
    return '#DIV/0!';
  }
  return parseFloat(value).toFixed(3);
};

// const timeData = () => {
//   let dataTimes = [];
//   let time = moment().startOf('date');
//   _.forEach(new Array(96), () => {
//     time.add(15, 'minutes');
//     const tK = time.format('HH:mm') === '00:00' ? '24:00' : time.format('HH:mm');
//     dataTimes.push(tK);
//   });
//   return dataTimes;
// };
// let dataTime = timeData();

export const seriesMap = {
  defaultMap: {
    火电最小: {
      stack: 'A',
    },
    水电计划: {
      stack: 'A',
    },
  },
  origin: {
    '新能源预测-DW': {
      stack: 'A',
    },
    '新能源预测-XZ': {
      stack: 'A',
    },
    '新能源预测-DR': {
      stack: 'A',
    },
    '新能源预测-HN': {
      stack: 'A',
    },
  },
  PHBSD: {
    联络线: {
      stack: 'A',
    },
    自备机组: {
      stack: 'A',
    },
    非市场化核电: {
      stack: 'A',
    },
    水电计划: {
      stack: 'A',
    },
  },
  PXBMX: {
    统调负荷预测: {
      stack: 'A',
    },
    东送计划预测: {
      stack: 'A',
    },
    非市场出力计划: {
      stack: 'B',
    },
    全网新能源: {
      stack: 'B',
    },
  },
  PDBLJ: {
    非市场化机组总出力: {
      stack: 'A',
    },
    水电含抽蓄总出力: {
      stack: 'A',
    },
    新能源预测: {
      stack: 'A',
    },
  },
};

export const stackData = {
  powergrid: '新能源预测-DW',
  intelligence: '新能源预测-XZ',
};

export const stackDataArr = ['新能源预测-DW', '新能源预测-XZ', '新能源预测-DR', '新能源预测-HN'];

export const stackList = {
  powergrid: ['新能源预测-XZ', '新能源预测-DR', '新能源预测-HN'],
  intelligence: ['新能源预测-DW', '新能源预测-DR', '新能源预测-HN'],
  dongRun: ['新能源预测-DW', '新能源预测-XZ', '新能源预测-HN'],
  huiNeng: ['新能源预测-XZ', '新能源预测-DR', '新能源预测-DW'],
};

export const contain = ['新能源预测-DW', '新能源预测-XZ', '新能源预测-DR', '新能源预测-HN'];

export const supplyAndDemandOptions = function (
  list,
  ctooltip,
  flag,
  Unit,
  chil,
  timeline,
  listArr,
  marketId,
) {
  const lists = JSON.parse(JSON.stringify(list));
  // let listArray = listArr;
  let tooltip = {
    trigger: 'axis',
    extraCssText: 'box-shadow: 0 0 10px rgba(0, 0, 0, 0.1)',
    backgroundColor: 'rgba(255, 255, 255, 1)',
    textStyle: { color: '#888E95', borderWidth: 1, borderColor: '#1A253C4B', padding: 12 },
  };
  tooltip.axisPointer = {
    type: 'cross',
    label: { backgroundColor: '#F5F8FA', color: '#888E95', shadowBlur: 0 },
  };
  tooltip.formatter = ctooltip;
  let xData = [],
    xAxisData = [],
    // series = [],
    newseries = [],
    legendData = [],
    min = 0;
  // const newList = lists.map((itemP) => {
  //   let originalObj = {};
  //   let toopFormat = 'YYYYMMDD HHmm';
  //   const hasSum = itemP.map(item => {
  //     if (stackList[flag].includes(item.name)) {
  //       originalObj[item.name] = {};

  //       item?.list.map(i => {
  //         if (item.xType === 'timer') {
  //           let tooptitle = moment(Number(i.xAxis)).format(toopFormat);
  //           if (tooptitle.indexOf('0000') > 0 && Unit=== 0) {
  //             tooptitle = moment(Number(i.xAxis))
  //               .subtract(1, 'days')
  //               .format(toopFormat);
  //           }
  //           tooptitle = tooptitle.replace(/0000/, '2400');
  //           originalObj[item.name][tooptitle] = i.value;
  //         } else {
  //           let tooptitle = '';
  //           if (Unit=== 5) {
  //             tooptitle = moment(i.xAxis).format('YYYYMMDD');
  //           } else if (Unit=== 6) {
  //             tooptitle = moment(i.xAxis).format('YYYYMM');
  //           } else {
  //             const listarr = i.xAxis?.split(':');
  //             tooptitle = `${listarr[0]}${listarr[1]}`;
  //             tooptitle = tooptitle.replace(/0000/, '2400');
  //           }
  //           originalObj[item.name][tooptitle] = i.value;
  //         }
  //       });
  //       const [listObj = {}] = listArray.filter(m => {
  //         return m.name === item.name;
  //       });
  //       return {
  //         ...item,
  //         list: listObj?.list || [],
  //       };
  //     }
  //     return {
  //       ...item,
  //     };
  //   });
  //   return hasSum;
  // })
  lists.map((pItem) => {
    let series = [];
    pItem.map((item) => {
      let serie = { name: item.name, type: item.type || 'line', symbolSize: 0 },
        tempXData = [];
      legendData.push({
        name: item.name,
        icon: 'path://M 0 275 L 200 275 A 50 43 0 1 1 600 275 L 800 275 L 800 300 L 550 300 A 50 50 0 1 0 250 300 L 0 300 Z M 0 325 L 200 325 A 50 43 0 1 0 600 325 L 800 325 L 800 300 L 550 300 A 50 50 0 1 1 250 300 L 0 300 Z',
        itemStyle: {
          opacity: 1,
          borderWidth: 1,
          // borderColor: item.color,
          // color: '#1F1F1F',
        },
      });

      let seriesStyle = seriesMap?.[marketId]?.[item.name] || seriesMap.defaultMap?.[item.name];
      if (!stackList[flag].includes(item.name) && contain.includes(item.name)) {
        seriesStyle = seriesMap.origin?.[item.name];
      }
      if (seriesStyle) {
        serie = {
          ...serie,
          ...seriesStyle,
          areaStyle: { normal: { color: item.color, opacity: 0.2 } },
        };
      }
      serie.symbol = 'circle';
      serie.lineStyle = { normal: { opacity: 1, color: item.color, width: 1 } };

      if (
        (item.name === stackData.intelligence ||
          item.name === '新能源预测-DR' ||
          item.name === '新能源预测-HN') &&
        chil
      ) {
        serie.lineStyle = { normal: { opacity: 1, color: item.color, width: 1, type: 'dashed' } };
      }
      let array = [];
      let xType = '';
      item?.list?.map((cell) => {
        if (item.name === '水电计划' && cell.value < 0 && Math.abs(cell.value) > min) {
          min = Math.abs(cell.value);
        }
        xType = item.xType;
        let dqFormat = 'HHmm';
        let toopFormat = 'YYYYMMDD HHmm';
        const isTimeStamp = !new RegExp(/[\-|.|:]/g).test(cell.xAxis);
        const _xAxis = isTimeStamp ? Number(cell.xAxis) : cell.xAxis;
        let Xtitle = moment(_xAxis).format(dqFormat);
        let tooptitle = moment(_xAxis).format(toopFormat);
        serie.color = item.color;
        if (item.xType === null || item.xType == xTypeTime) {
          if (Xtitle === '0000') {
            Xtitle = '2400';
          }

          if (tooptitle.indexOf('0000') > 0) {
            tooptitle = moment(_xAxis).subtract(1, 'days').format(toopFormat);
          }
          tooptitle = tooptitle.replace(/0000/, '2400');
          if (Unit === 0) {
            tempXData.push(tooptitle);
          } else {
            tempXData.push(Xtitle);
          }

          serie.color = item.color;
          serie.selectorColor = item.color;
        } else {
          let timesDate = cell.xAxis;

          // if (Xtitle === 'Invalid date') {
          if (Unit === 5) {
            dqFormat = 'YYYYMMDD';
            toopFormat = 'YYYYMMDD';
          } else if (Unit === 6) {
            dqFormat = 'YYYYMM';
            toopFormat = 'YYYYMM';
          }
          timesDate = moment(cell.xAxis).format(dqFormat);
          if (timesDate === 'Invalid date') {
            const llistarr = cell.xAxis?.split(':');
            timesDate = `${llistarr[0]}${llistarr[1]}`;
          }
          tempXData.push(timesDate);
          // } else {
          // timesDate = moment(cell.xAxis).format('YYYYMM');
          // tempXData.push(timesDate);
          // }
        }
        array.push(formatCopper1(cell.value));
      });
      if (item.name === '水电计划' && min > 0) {
        min = Math.ceil(min / 100) * 100;
        array = array.map((t) => parseFloat(t) + min);
      }
      serie.data = array;
      serie.smooth = true;
      if (item.type === 'line' && item.list.length === 1) {
        serie.markLine = {
          symbol: 'none',
          silent: true,
          label: { formatter: '' },
          lineStyle: { type: 'solid', color: item.color },
          data: [
            [
              { name: item.name, yAxis: array[0], x: '43%' },
              { x: '63%', yAxis: array[0] },
            ],
          ],
        };
      }
      series.push(serie);
      if (xData.length === 0) {
        xData = xData.concat(tempXData);
      }
    });
    newseries.push(series);
  });
  let options = {
    baseOption: {
      timeline: {
        axisType: 'category',
        orient: 'vertical',
        autoPlay: false,
        inverse: true,
        playInterval: 1000,
        left: 'right',
        right: 0,
        top: 10,
        bottom: 20,
        width: 48,
        height: null,
        symbol: 'none',
        checkpointStyle: {
          symbolSize: 10,
          borderWidth: 2,
          color: 'white',
          borderColor: getCssVariableValue('--bd-primary'),
        },
        controlStyle: {
          itemSize: 13,
          showNextBtn: false,
          showPrevBtn: false,
        },
        lineStyle: {
          show: true,
          color: getCssVariableValue('--chart-x-line'),
          width: 1,
          type: 'solid',
        },
        data: [],
      },
      tooltip: tooltip,
      grid: { height: '80%', containLabel: true, left: 0, right: 78, top: '10%' },
      legend: {
        data: legendData,
        bottom: '0%',
        itemWidth: 16,
        itemHeight: 8,
        textStyle: {
          color: getCssVariableValue('--chart-legend-color'),
          rich: {
            update_time: {
              color: '#888E95',
            },
          },
        },
        // 图表的图例需要添加更新时间
        // 所以要自定义formatter去区分图例线名称和更新时间的样式
        // formatter: function (name) {
        //   // 由于系统负荷、火电、水电、新能源DW都是来自同一个数据源，故更新时间一定相同，所以不需要全部展示，只需要展示新能源DW的即可
        //   if(name.indexOf('新能源预测')==-1){
        //     return name
        //   }
        //   let { updateTime } = list.find((item) => item.name == name);
        //   updateTime = updateTime || '-'
        //   return (name + '{update_time|(' + updateTime + ')}')
        // },
        inactiveColor: '#545454',
        inactiveBorderColor: '#545454',
        inactiveBorderWidth: 'inherit',
      },
      axisPointer: {
        link: { xAxisIndex: 'all' },
        label: { backgroundColor: '#F5F8FA', color: '#888E95', shadowBlur: 0 },
      },
      xAxis: {
        type: 'category',
        data: xData,
        scale: true,
        boundaryGap: true,
        axisTick: { show: false },
        nameTextStyle: { color: getCssVariableValue('--chart-font-color') },
        axisLabel: { color: getCssVariableValue('--chart-font-color') },
        // axisLine: { lineStyle: { color: '#D1D9E9' } },
        axisLine: { lineStyle: { color: getCssVariableValue('--chart-x-line') } },
        axisPointer: {
          label: {
            backgroundColor: getCssVariableValue('--bd-primary'),
            color: getCssVariableValue('--ant-cus-font_active'),
            shadowBlur: 0,
            formatter: xAxisFormatter,
          },
          lineStyle: {
            type: 'solid',
            color: getCssVariableValue('--chart-x-line'),
          },
        },
        splitLine: { show: false },
      },

      dataZoom: [
        { type: 'inside', xAxisIndex: [0, 1], show: false, minSpan: 1 },
        // { type: 'slider', AxisIndex: [0, 1], height: 20, show: false, minSpan: 1, top: '80%' },
      ],
      yAxis: {
        // min: 0,
        type: 'value',
        scale: true,
        splitNumber: 4,
        axisLine: { show: false },
        axisTick: { show: false },
        nameTextStyle: { color: getCssVariableValue('--chart-font-color') },
        axisLabel: {
          color: getCssVariableValue('--chart-font-color'),
          formatter: (value) => {
            return value - min;
          },
        },
        splitLine: { lineStyle: { color: getCssVariableValue('--chart-y-line') } },
        axisPointer: {
          label: {
            backgroundColor: getCssVariableValue('--bd-primary'),
            color: getCssVariableValue('--ant-cus-font_active'),
            shadowBlur: 0,
            formatter: ({ value }) => {
              return parseFloat(value - min).toFixed(2);
            },
          },
          lineStyle: {
            type: 'solid',
            color: getCssVariableValue('--chart-x-line'),
          },
        },
      },
      series: newseries[0],
    },
    options: [],
  };

  for (var n = 0; n < timeline.length; n++) {
    options.baseOption.timeline.data.push(timeline[n]);
    options.options.push({
      series: newseries[n],
    });
  }
  return options;
};

export const supplyAndDemandOptionsCompare = function (list, ctooltip, flag, Unit, chil, marketId) {
  let tooltip = {
    trigger: 'axis',
    extraCssText: 'box-shadow: 0 0 10px rgba(0, 0, 0, 0.1)',
    backgroundColor: 'rgba(255, 255, 255, 1)',
    textStyle: { color: '#888E95', borderWidth: 1, borderColor: '#1A253C4B', padding: 12 },
  };
  tooltip.axisPointer = {
    type: 'cross',
    label: { backgroundColor: '#F5F8FA', color: '#888E95', shadowBlur: 0 },
  };
  tooltip.formatter = ctooltip;
  let xData = [],
    xAxisData = [],
    series = [],
    legendData = [];
  list.map((item) => {
    let serie = { name: item.name, type: item.type || 'line', symbolSize: 0 },
      tempXData = [];
    legendData.push({
      name: item.name,
      itemStyle: {
        opacity: 1,
        icon: 'path://M 0 275 L 200 275 A 50 43 0 1 1 600 275 L 800 275 L 800 300 L 550 300 A 50 50 0 1 0 250 300 L 0 300 Z M 0 325 L 200 325 A 50 43 0 1 0 600 325 L 800 325 L 800 300 L 550 300 A 50 50 0 1 1 250 300 L 0 300 Z',
        borderWidth: 1,
        // borderColor: item.color,
        // color: '#1F1F1F',
      },
    });

    let seriesStyle = seriesMap?.[marketId]?.[item.name] || seriesMap.defaultMap?.[item.name];
    if (!stackList[flag].includes(item.name) && contain.includes(item.name)) {
      seriesStyle = seriesMap.origin?.[item.name];
    }
    if (seriesStyle) {
      serie = {
        ...serie,
        ...seriesStyle,
        areaStyle: { normal: { color: item.color, opacity: 0.2 } },
      };
    }
    serie.symbol = 'circle';
    serie.lineStyle = { normal: { opacity: 1, color: item.color, width: 1 } };

    if (
      (item.name === stackData.intelligence ||
        item.name === '新能源预测-DR' ||
        item.name === '新能源预测-HN') &&
      chil
    ) {
      serie.lineStyle = { normal: { opacity: 1, color: item.color, width: 1, type: 'dashed' } };
    }
    let array = [];
    let xType = '';
    item?.list?.map((cell) => {
      xType = item.xType;
      let dqFormat = 'HHmm';
      let toopFormat = 'YYYYMMDD HHmm';
      const isTimeStamp = !new RegExp(/[\-|.|:]/g).test(cell.xAxis);
      const _xAxis = isTimeStamp ? Number(cell.xAxis) : cell.xAxis;
      let Xtitle = moment(_xAxis).format(dqFormat);
      let tooptitle = moment(_xAxis).format(toopFormat);
      serie.color = item.color;
      if (item.xType === null || item.xType == xTypeTime) {
        if (Xtitle === '0000') {
          Xtitle = '2400';
        }

        if (tooptitle.indexOf('0000') > 0) {
          tooptitle = moment(_xAxis).subtract(1, 'days').format(toopFormat);
        }
        tooptitle = tooptitle.replace(/0000/, '2400');
        if (Unit === 0) {
          tempXData.push(tooptitle);
        } else {
          tempXData.push(Xtitle);
        }

        serie.color = item.color;
        serie.selectorColor = item.color;
      } else {
        let timesDate = cell.xAxis;

        if (Xtitle === 'Invalid date') {
          if (Unit === 5) {
            dqFormat = 'YYYYMMDD';
            toopFormat = 'YYYYMMDD';
          } else if (Unit === 6) {
            dqFormat = 'YYYYMM';
            toopFormat = 'YYYYMM';
          }
          timesDate = moment(cell.xAxis).format(dqFormat);
          if (timesDate === 'Invalid date') {
            const llistarr = cell.xAxis?.split(':');
            timesDate = `${llistarr[0]}${llistarr[1]}`;
          }
          tempXData.push(timesDate);
        } else {
          timesDate = moment(cell.xAxis).format('YYYYMM');
          tempXData.push(timesDate);
        }
      }
      array.push(formatCopper1(cell.value));
      serie.data = array;
      serie.smooth = true;
      if (item.type === 'line' && item.list.length === 1) {
        serie.markLine = {
          symbol: 'none',
          silent: true,
          label: { formatter: '' },
          lineStyle: { type: 'solid', color: item.color },
          data: [
            [
              { name: item.name, yAxis: formatCopper1(cell.value), x: '43%' },
              { x: '63%', yAxis: formatCopper1(cell.value) },
            ],
          ],
        };
      }
    });
    series.push(serie);
    if (xData.length === 0) {
      xData = xData.concat(tempXData);
    }
  });

  let option = {
    tooltip: tooltip,
    grid: { height: '80%', containLabel: true, left: 0, right: 0, top: '10%' },
    legend: {
      data: legendData,
      bottom: '0%',
      itemWidth: 16,
      itemHeight: 8,
      textStyle: {
        color: getCssVariableValue('--chart-legend-color'),
        rich: {
          update_time: {
            color: '#888E95',
          },
        },
      },
      // 图表的图例需要添加更新时间
      // 所以要自定义formatter去区分图例线名称和更新时间的样式
      // formatter: function (name) {
      //   // 由于系统负荷、火电、水电、新能源DW都是来自同一个数据源，故更新时间一定相同，所以不需要全部展示，只需要展示新能源DW的即可
      //   if(name.indexOf('新能源预测')==-1){
      //     return name
      //   }
      //   let { updateTime } = list.find((item) => item.name == name);
      //   updateTime = updateTime || '-'
      //   return (name + '{update_time|(' + updateTime + ')}')
      // },
      inactiveColor: '#545454',
      inactiveBorderColor: '#545454',
      inactiveBorderWidth: 'inherit',
    },
    axisPointer: {
      link: { xAxisIndex: 'all' },
      label: {
        backgroundColor: '#F5F8FA',
        color: getCssVariableValue('--chart-x-line'),
        shadowBlur: 0,
      },
    },
    xAxis: {
      type: 'category',
      data: xData,
      scale: true,
      boundaryGap: true,
      axisTick: { show: false },
      nameTextStyle: { color: getCssVariableValue('--chart-font-color') },
      axisLabel: { color: getCssVariableValue('--chart-font-color') },
      // axisLine: { lineStyle: { color: '#D1D9E9' } },
      axisLine: { lineStyle: { color: getCssVariableValue('--chart-x-line') } },
      axisPointer: {
        label: {
          backgroundColor: getCssVariableValue('--bd-primary'),
          color: getCssVariableValue('--ant-cus-font_active'),
          shadowBlur: 0,
          formatter: xAxisFormatter,
        },
        lineStyle: {
          type: 'solid',
          color: getCssVariableValue('--chart-x-line'),
        },
      },
      splitLine: { show: false },
    },

    dataZoom: [
      { type: 'inside', xAxisIndex: [0, 1], show: false, minSpan: 1 },
      // { type: 'slider', AxisIndex: [0, 1], height: 20, show: false, minSpan: 1, top: '80%' },
    ],
    yAxis: {
      min: 0,
      type: 'value',
      scale: true,
      splitNumber: 4,
      axisLine: { show: false },
      axisTick: { show: false },
      nameTextStyle: { color: getCssVariableValue('--chart-font-color') },
      axisLabel: { color: getCssVariableValue('--chart-font-color') },
      splitLine: { lineStyle: { color: getCssVariableValue('--chart-y-line') } },
      axisPointer: {
        label: {
          backgroundColor: getCssVariableValue('--bd-primary'),
          color: getCssVariableValue('--ant-cus-font_active'),
          shadowBlur: 0,
        },
        lineStyle: {
          type: 'solid',
          color: getCssVariableValue('--chart-x-line'),
        },
      },
    },
    series: series,
  };
  return option;
};

//不要删除 可能还会用
// export const supplyAndDemandOption = function(list, yTitle, Unit, ctooltip) {
//   let legendData = [];
//   let XData = []; // x轴所显示的数据
//   let series = []; // 图表所显示的数据
//   let colors = [];
//   let tooltip = {
//     trigger: 'axis',
//     extraCssText: 'box-shadow: 0 0 10px rgba(0, 0, 0, 0.1)',
//     backgroundColor: 'rgba(255, 255, 255, 1)',
//     textStyle: { color: '#888E95', borderWidth: 1, borderColor: '#1A253C4B', padding: 12 },
//   };
//   tooltip.axisPointer = {
//     type: 'cross',
//     label: { backgroundColor: '#F5F8FA', color: '#888E95', shadowBlur: 0 },
//   };
//   tooltip.formatter = ctooltip;
//   let xType = '';
//   list.forEach(item => {
//     let plusColor = item.color.split(',')[0];
//     let minusColor = item.color.split(',')[1];
//     let serie = { name: item.name, type: item.type || 'line', symbolSize: 0 };
//     let tempXData = []; // 放x轴时间点的数组
//     legendData.push({
//       name: item.name,
//       itemStyle:
//         item.name === '景气指数'
//           ? {}
//           : {
//               opacity: 1,
//               borderWidth: 1,
//               borderColor: plusColor,
//               color: '#1F1F1F',
//             },
//     });
//     if (item.type === 'line') {
//       if (item.name === '系统负荷-联络线') {
//         serie.lineStyle = { normal: { opacity: 1, color: item.color, width: 1 } };
//         serie.symbol = 'circle';
//       } else {
//         serie.stack = '总量';
//         serie.symbol = 'circle';
//         serie.lineStyle = { normal: { opacity: 1, color: item.color, width: 1 } };
//         serie.areaStyle = { normal: { color: item.color, opacity: 0.2 } };
//       }
//     } else if (item.type === 'bar') {
//       serie.xAxisIndex = 1;
//       serie.yAxisIndex = 1;
//       serie.stack = 'bar';
//       (serie.lineStyle = {
//         width: 1,
//       }),
//         (serie.barMaxWidth = '15px');
//       serie.barMinWidth = '1px';
//     }
//     let array = [];
//     item.list &&
//       item.list.forEach(cell => {
//         xType = item.xType;
//         let dqFormat = 'HHmm';
//         let toopFormat = 'YYYYMMDD HHmm';
//         let Xtitle = moment(Number(cell.xAxis)).format(dqFormat);
//         let tooptitle = moment(Number(cell.xAxis)).format(toopFormat);
//         serie.color = item.color;
//         if (item.xType === null || item.xType == xTypeTime) {
//           if (Unit === 1) {
//             dqFormat = 'YYYYMMDD';
//             toopFormat = 'YYYYMMDD';
//           } else if (Unit === 2) {
//             dqFormat = 'YYYYMM';
//             toopFormat = 'YYYYMM';
//           }
//           if (Xtitle === '0000') {
//             Xtitle = '2400';
//           }

//           if (tooptitle.indexOf('0000') > 0) {
//             tooptitle = moment(Number(cell.xAxis))
//               .subtract(1, 'days')
//               .format(toopFormat);
//           }
//           tooptitle = tooptitle.replace(/0000/, '2400');
//           tempXData.push(Xtitle);

//           if (item.name === '景气指数') {
//             serie.color = plusColor;
//             serie.selectorColor = plusColor;

//             array.push({
//               name: tooptitle,
//               itemStyle: { color: cell.value >= 0 ? plusColor : minusColor },
//               value: [Number(cell.xAxis), formatCopper(cell.value)],
//               tvalue: formatCopper1(cell.value),
//               tooltip: { backgroundColor: plusColor },
//             });
//           } else {
//             serie.color = item.color;
//             serie.selectorColor = item.color;
//             array.push({
//               name: tooptitle,
//               value: [Number(cell.xAxis), formatCopper(cell.value)],
//               tvalue: formatCopper1(cell.value),
//               tooltip: { backgroundColor: item.color },
//             });
//           }
//         } else {
//           if (item.type === 'line' && item.list.length === 1) {
//             serie.markLine = {
//               symbol: 'none',
//               silent: true,
//               label: { formatter: '' },
//               lineStyle: { type: 'solid', color: item.color },
//               data: [
//                 [
//                   { name: item.name, yAxis: formatCopper(cell.value), x: '43%' },
//                   { x: '63%', yAxis: formatCopper(cell.value) },
//                 ],
//               ],
//             };
//           }
//           if (item.name === '景气指数') {
//             serie.color = plusColor;
//             serie.selectorColor = plusColor;
//             array.push({
//               name: cell.xAxis.replace(/[\-|.|:]/g, ''),
//               itemStyle: { color: cell.value >= 0 ? plusColor : minusColor },
//               value: formatCopper(cell.value),
//               tvalue: formatCopper1(cell.value),
//               tooltip: { backgroundColor: plusColor },
//             });
//           } else {
//             let timesDate = cell.xAxis;
//             if (Xtitle === 'Invalid date') {
//               if (Unit === 1) {
//                 dqFormat = 'YYYYMMDD';
//                 toopFormat = 'YYYYMMDD';
//               } else if (Unit === 2) {
//                 dqFormat = 'YYYYMM';
//                 toopFormat = 'YYYYMM';
//               }

//               timesDate = moment(cell.xAxis).format(dqFormat);
//               if (timesDate === 'Invalid date') {
//                 const llistarr = cell.xAxis?.split(':');
//                 timesDate = `${llistarr[0]}${llistarr[1]}`;
//               }
//               tempXData.push(timesDate);
//             } else {
//               timesDate = moment(cell.xAxis).format('YYYYMM');
//               tempXData.push(timesDate);
//             }

//             array.push({
//               name: timesDate,
//               value: formatCopper(cell.value),
//               tvalue: formatCopper1(cell.value),
//               tooltip: { backgroundColor: item.color },
//             });
//           }
//         }
//       });
//     if (XData.length === 0) {
//       XData = XData.concat(tempXData);
//     }
//     // serie.step = true;
//     serie.data = array;
//     serie.smooth = true;
//     series.push(serie);
//   });
//   let option = {
//     title: {},
//     tooltip: tooltip,
//     color: colors,
//     legend: {
//       data: legendData,
//       bottom: '5%',
//       itemHeight: 12,
//       itemWidth: 18,
//       textStyle: {
//         color: 'white',
//       },
//       inactiveColor: '#545454',
//       inactiveBorderColor: '#545454',
//       inactiveBorderWidth: 'inherit',
//     },
//     axisPointer: {
//       link: { xAxisIndex: 'all' },
//       label: { backgroundColor: '#F5F8FA', color: '#888E95', shadowBlur: 0 },
//     },
//     xAxis: [
//       {
//         type: xType === xTypeTime ? 'time' : 'category',
//         data: xType === xTypeTime ? null : XData,
//         scale: true,
//         boundaryGap: true,
//         axisTick: { alignWithLabel: true },
//         nameTextStyle: { color: '#888E95' },
//         axisLabel: { color: '#888E95' },
//         axisLine: { lineStyle: { color: '#D1D9E9' } },
//         axisPointer: {
//           label: {
//             backgroundColor: isDark() ? '#444444' : '#F5F8FA',
//             color: isDark() ? 'white' : '#888E95',
//             shadowBlur: 0,
//             formatter: xAxisFormatter,
//           },
//         },
//         splitLine: { show: false },
//       },
//       {
//         type: xType === xTypeTime ? 'time' : 'category',
//         data: xType === xTypeTime ? null : XData,
//         scale: true,
//         gridIndex: 1,
//         boundaryGap: true,
//         axisTick: { alignWithLabel: true },
//         nameTextStyle: { color: '#888E95' },
//         axisLabel: { color: '#888E95' },
//         axisLine: { lineStyle: { color: '#D1D9E9' } },
//         axisPointer: {
//           label: {
//             backgroundColor: isDark() ? '#444444' : '#F5F8FA',
//             color: isDark() ? 'white' : '#888E95',
//             shadowBlur: 0,
//             formatter: xAxisFormatter,
//           },
//         },
//         splitLine: { show: false },
//       },
//     ],
//     yAxis: [
//       {
//         min: 0,
//         type: 'value',
//         scale: true,
//         splitNumber: 4,
//         axisLine: { show: false },
//         axisTick: { show: false },
//         nameTextStyle: { color: '#888E95' },
//         axisLabel: { color: '#888E95' },
//         splitLine: { lineStyle: { color: '#464646' } },
//         axisPointer: {
//           label: {
//             backgroundColor: isDark() ? '#444444' : '#F5F8FA',
//             color: isDark() ? 'white' : '#888E95',
//             shadowBlur: 0,
//           },
//         },
//       },
//       {
//         type: 'value',
//         scale: true,
//         gridIndex: 1,
//         splitNumber: 2,
//         axisLine: { show: false },
//         axisTick: { show: false },
//         nameTextStyle: { color: '#888E95' },
//         axisLabel: { color: '#888E95' },
//         splitLine: { lineStyle: { color: '#464646' } },
//         axisPointer: {
//           label: {
//             backgroundColor: isDark() ? '#444444' : '#F5F8FA',
//             color: isDark() ? 'white' : '#888E95',
//             shadowBlur: 0,
//           },
//         },
//       },
//     ],
//     grid: [
//       { left: 5, right: 20, height: '220', top: '9%', containLabel: true },
//       { left: 20, right: 20, containLabel: true, top: '64%', height: '115', boundaryGap: true },
//     ],
//     // 缩放轴
//     dataZoom: [
//       { type: 'inside', xAxisIndex: [0, 1], show: false, minSpan: 1 },
//       { type: 'slider', AxisIndex: [0, 1], height: 20, show: false, minSpan: 1, top: '80%' },
//     ],
//     series: series,
//   };
//   if (xType === xTypeTime) {
//     option.xAxis.forEach(item => {
//       item.axisLabel.formatter = value => {
//         let formatStr = XData.length === 96 || XData.length === 24 ? 'HHmm' : 'YYYYMMDD HHmm';
//         let data = moment(value).format(formatStr);

//         if (moment(value).format('HHmm') === '0000') {
//           if (XData.length === 96 || XData.length === 24) {
//             data = '2400';
//           } else {
//             data =
//               moment(value)
//                 .subtract(1, 'days')
//                 .format('YYYYMMDD') + ' 2400';
//           }
//         }
//         return data;
//       };
//     });
//   }
//   return option;
// };
